package miMain;

import java.util.ArrayList;
import java.util.List;
import vista.ventanaPrincipal.VentanaPrincipal;
import modelo.Asignacion;
import modelo.Proyecto;
import modelo.SistemaPrincipal;
import modelo.Usuario;
import modelo.tareas.Tarea;
import modelo.tareas.TareaCompuesta;
import modelo.tareas.TareaSimple;

public class Main {
	// lista de proyectos
	private List<Proyecto> proyectos = new ArrayList<Proyecto>();
	
	//lista de usuarios
	private List<Usuario> todosLosUsuarios= new ArrayList<Usuario>(); 
	private List<Usuario> usuariosParaProyecto1= new ArrayList<Usuario>(); 
	private List<Usuario> usuariosParaProyecto2= new ArrayList<Usuario>(); 
	private List<Usuario> usuariosParaProyecto3= new ArrayList<Usuario>(); 
	private List<Usuario> usuariosParaProyecto4= new ArrayList<Usuario>(); 
	private List<Usuario> usuariosParaProyecto5= new ArrayList<Usuario>(); 
	private List<Usuario> usuariosAnteriores = new ArrayList<Usuario>(); 
	
	//lista de tareas
	private List<Tarea> tareas1= new ArrayList<Tarea>();
	private List<Tarea> tareas2= new ArrayList<Tarea>();
	private List<Tarea> tareas3= new ArrayList<Tarea>();
	private List<Tarea> tareas4= new ArrayList<Tarea>();
	private List<Tarea> tareas5= new ArrayList<Tarea>();
	
	//lista de asignaciones
	private List<Asignacion> asignaciones= new ArrayList<Asignacion>();
	
	//variables
	private Tarea tarea1p1, tarea2p1, tarea3p1, tarea4p1, tarea5p1, 
				  tarea1p2, tarea2p2, tarea3p2, tarea4p2, tarea5p2, 
				  tarea1p3, tarea2p3, tarea3p3, tarea4p3, tarea5p3, tarea6p3, tarea7p3, tarea8p3,
				  tarea1p4, tarea2p4, tarea3p4, tarea4p4, tarea5p4, tarea6p4, tarea7p4, tarea8p4, tarea9p4,
				  tarea1p5, tarea2p5, tarea3p5, tarea4p5, tarea5p5, tarea6p5, tarea7p5, tarea8p5; 
	private Proyecto p1, p2, p3, p4, p5;
	private Usuario usuario1, usuario2, usuario3, usuario4, usuario5, usuario6, usuario7, usuario8, usuario9, usuario10;
	
	
	//Constructor **********************************************************************/
	
	public Main(){
		this.generarDatos();
	}
	
	//Metodos **************************************************************************/
	public void generarDatos (){
		//creo a todos los usuarios
		this.usuario1 = new Usuario("Rocio", "rocio@mail.com");
		this.usuario2 = new Usuario("Natalia", "natalia@mail.com");
		this.usuario3 = new Usuario("Cristian", "cristian@mail.com");
		this.usuario4 = new Usuario("Alexis", "alexis@mail.com");
		this.usuario5 = new Usuario("Guido", "guido@mail.com");
		this.usuario6 = new Usuario("Diego", "diego@mail.com");
		this.usuario7 = new Usuario("Ariel", "ariel@mail.com");
		this.usuario8 = new Usuario("Susana", "	susana@mail.com");
		this.usuario9 = new Usuario("Fede", "fede@mail.com");
		this.usuario10 = new Usuario("Pablo", "pablo@mail.com");
	
		//agrego los usuarios a una listaUsuarios
		this.getTodosLosUsuarios().add(this.usuario1);
		this.getTodosLosUsuarios().add(this.usuario2);
		this.getTodosLosUsuarios().add(this.usuario3);
		this.getTodosLosUsuarios().add(this.usuario4);
		this.getTodosLosUsuarios().add(this.usuario5);
		this.getTodosLosUsuarios().add(this.usuario6);
		this.getTodosLosUsuarios().add(this.usuario7);
		this.getTodosLosUsuarios().add(this.usuario8);
		this.getTodosLosUsuarios().add(this.usuario9);
		this.getTodosLosUsuarios().add(this.usuario10);

		//usuarios para el proyecto 1
		this.usuariosParaProyecto1.add(this.usuario1);
		this.usuariosParaProyecto1.add(this.usuario2);
		this.usuariosParaProyecto1.add(this.usuario3);
		this.usuariosParaProyecto1.add(this.usuario4);
		
		//usuarios para el proyecto 2
		this.usuariosParaProyecto2.add(this.usuario5);
		this.usuariosParaProyecto2.add(this.usuario6);
		this.usuariosParaProyecto2.add(this.usuario7);
		this.usuariosParaProyecto2.add(this.usuario8);
		this.usuariosParaProyecto2.add(this.usuario9);
		this.usuariosParaProyecto2.add(this.usuario10);
		
		//usuarios para el proyecto 3
		this.usuariosParaProyecto3.add(this.usuario1);
		this.usuariosParaProyecto3.add(this.usuario3);
		this.usuariosParaProyecto3.add(this.usuario5);
		this.usuariosParaProyecto3.add(this.usuario7);
		this.usuariosParaProyecto3.add(this.usuario9);

		//usuarios para el proyecto 4
		this.usuariosParaProyecto4.add(this.usuario2);
		this.usuariosParaProyecto4.add(this.usuario4);
		this.usuariosParaProyecto4.add(this.usuario6);
		this.usuariosParaProyecto4.add(this.usuario8);
		this.usuariosParaProyecto4.add(this.usuario10);

		//usuarios para el proyecto 5
		this.usuariosParaProyecto5.add(this.usuario1);
		this.usuariosParaProyecto5.add(this.usuario6);
		this.usuariosParaProyecto5.add(this.usuario8);

				// Tareas Simples proyecto1
		this.tarea1p1 = new TareaSimple("Tarea 1", 3, "15/12/2010 13:40", 5);
		this.tarea2p1 = new TareaSimple("Tarea 2", 6, "23/12/2010 20:29", 12);
		this.tarea3p1 = new TareaSimple("Tarea 3", 10, "05/01/2011 16:30", 24);
		this.tarea4p1 = new TareaSimple("Tarea 4", 3, "01/03/2011 22:20", 1, this.tarea1p1);
		
		// Tareas Compuestas proyecto1
		List<Tarea> tareasQComponen1= new ArrayList<Tarea>();
		tareasQComponen1.add(tarea2p1);
		this.tarea5p1 = new TareaCompuesta("Tarea 7", 9, "23/05/2011 22:34", 27, tareasQComponen1);
		
		
		// Tareas Simples proyecto2
		this.tarea1p2 = new TareaSimple("Tarea 1", 3, "15/12/2010 13:40", 5);
		this.tarea2p2 = new TareaSimple("Tarea 2", 6, "23/12/2010 20:29", 12);
		this.tarea3p2 = new TareaSimple("Tarea 3", 10, "05/01/2011 16:30", 24);
		this.tarea4p2 = new TareaSimple("Tarea 4", 3, "01/03/2011 22:20", 1, this.tarea1p2);
		this.tarea5p2 = new TareaSimple("Tarea 5", 10, "05/01/2011 16:30", 2, this.tarea2p2);
		
		
		// Tareas Simples proyecto3
		this.tarea1p3 = new TareaSimple("Tarea 1", 3, "15/12/2010 13:40", 5);
		this.tarea2p3 = new TareaSimple("Tarea 2", 6, "23/12/2010 20:29", 12);
		this.tarea3p3 = new TareaSimple("Tarea 3", 10, "05/01/2011 16:30", 24);
		this.tarea4p3 = new TareaSimple("Tarea 4", 3, "01/03/2011 22:20", 1, this.tarea1p3);
		this.tarea5p3 = new TareaSimple("Tarea 5", 10, "05/01/2011 16:30", 2, this.tarea2p3);
		this.tarea6p3 = new TareaSimple("Tarea 6", 7, "15/11/2011 13:10", 3);
		
		// Tareas Compuestas proyecto3
		List<Tarea> tareasQComponen2= new ArrayList<Tarea>();
		tareasQComponen2.add(tarea6p3);
		this.tarea7p3 = new TareaCompuesta("Tarea 7", 9, "23/05/2011 22:34", 27, tareasQComponen2);
		
		List<Tarea> tareasQComponen3= new ArrayList<Tarea>();
		tareasQComponen3.add(tarea7p3);
		this.tarea8p3 = new TareaCompuesta("Tarea 8", 2, "03/01/2011 21:23", 4, tareasQComponen3);
		
		// Tareas Simples proyecto4
		this.tarea1p4 = new TareaSimple("Tarea 1", 3, "15/12/2010 13:45", 5);
		this.tarea2p4 = new TareaSimple("Tarea 2", 1, "21/11/2010 10:20", 5);
		this.tarea3p4 = new TareaSimple("Tarea 3", 3, "30/11/2011 13:10", 1);
		this.tarea4p4 = new TareaSimple("Tarea 4", 5, "21/04/2011 21:10", 2, this.tarea3p4);
		this.tarea5p4 = new TareaSimple("Tarea 5", 5, "15/07/2011 20:20", 3);
		this.tarea6p4 = new TareaSimple("Tarea 6", 3, "15/12/2010 13:45", 5);
		this.tarea7p4 = new TareaSimple("Tarea 7", 1, "21/11/2010 10:20", 5, this.tarea6p4);
		this.tarea8p4 = new TareaSimple("Tarea 8", 3, "30/11/2011 13:10", 1, this.tarea7p4);
		
		// Tareas Compuestas proyecto4
		
		List<Tarea> tareasQComponen4= new ArrayList<Tarea>();
		tareasQComponen4.add(tarea1p4);
		tareasQComponen4.add(tarea2p4);
		
		this.tarea9p4 = new TareaCompuesta("Tarea 9", 9, "23/05/2011 22:34", 27, tareasQComponen4);
		
		
		// Tareas Simples proyecto5
		this.tarea1p5 = new TareaSimple("Tarea 1", 2, "25/12/2010 11:55", 4);
		this.tarea2p5 = new TareaSimple("Tarea 2", 1, "31/07/2010 10:20", 2);
		this.tarea3p5 = new TareaSimple("Tarea 3", 10, "10/01/2011 12:10", 1,  this.tarea1p5);
		this.tarea4p5 = new TareaSimple("Tarea 4", 7, "22/03/2011 23:10", 2);
		this.tarea5p5 = new TareaSimple("Tarea 5", 1, "31/07/2010 10:20", 2, this.tarea2p5);
		this.tarea6p5 = new TareaSimple("Tarea 6", 2, "21/01/2010 11:31", 3);
		
		// Tareas Compuestas proyecto5
		List<Tarea> tareasQComponen5= new ArrayList<Tarea>();
		tareasQComponen5.add(tarea4p5);
		this.tarea7p5 = new TareaCompuesta("Tarea 7", 2, "12/12/2010 14:15", 4, tareasQComponen5);

		List<Tarea> tareasQComponen6= new ArrayList<Tarea>();
		tareasQComponen6.add(tarea3p5);
		tareasQComponen6.add(tarea5p5);
		
		this.tarea8p5 = new TareaCompuesta("Tarea 8", 9, "23/05/2011 22:34", 12, tarea6p5, tareasQComponen6);
		
		
		
		
		//Agregar tareas 
		//Proyecto 1
		tareas1.add(tarea3p1);
		tareas1.add(tarea4p1);
		tareas1.add(tarea5p1);
		
		//Proyecto 2
		tareas2.add(tarea3p2);
		tareas2.add(tarea4p2);
		tareas2.add(tarea5p2);
		
		//Proyecto 3
		tareas3.add(tarea3p3);
		tareas3.add(tarea4p3);
		tareas3.add(tarea5p3);
		tareas3.add(tarea8p3);
		
		//Proyecto 4
		tareas4.add(tarea4p4);
		tareas4.add(tarea5p4); 
		tareas4.add(tarea8p4); 
		tareas4.add(tarea9p4);
		
		//Proyecto 5
		tareas5.add(tarea7p5); 
		tareas5.add(tarea8p5); 
		
		//asignaciones
		asignaciones.add(new Asignacion("14/02/2010  19:43", "24/09/2010 13:40", new Usuario("Pepe", "pepe@gmail.com"), tarea1p1));
		asignaciones.add(new Asignacion("24/12/2010  23:13", "04/09/2011 20:48", new Usuario("Juan", "pepe@gmail.com"), tarea2p1));
		asignaciones.add(new Asignacion("31/07/2010  15:20", "12/09/2010 19:43", new Usuario("Fulano", "pepe@gmail.com"), tarea3p2));
		asignaciones.add(new Asignacion("07/02/2010  08:09", "21/09/2010 18:00", new Usuario("Mengano", "pepe@gmail.com"), tarea3p3));
		asignaciones.add(new Asignacion("07/05/2011  18:59", "23/05/2011 19:54", new Usuario("Rocio", "rocio@gmail.com"), tarea6p5));
		asignaciones.add(new Asignacion("17/06/2010  21:54", "21/09/2010 13:22", new Usuario("Natalia", "nati@gmail.com"), tarea2p2));
		asignaciones.add(new Asignacion("08/08/2010  15:43", "28/12/2010 16:19", new Usuario("Cristian", "chrys@gmail.com"), tarea4p5));
		asignaciones.add(new Asignacion("14/12/2010  15:43", "31/12/2010 16:19", new Usuario("Alexis", "alexis@gmail.com"), tarea5p1));
		asignaciones.add(new Asignacion("29/06/2010  21:54", "14/03/2011 12:00", new Usuario("Guido", "guido@gmail.com"), tarea4p2));
		asignaciones.add(new Asignacion("14/04/2011  15:43", "26/05/2011 21:44", new Usuario("Pablo", "pablo@gmail.com"), tarea7p4));
		asignaciones.add(new Asignacion("15/12/2010  20:55", "28/12/2010 16:19", new Usuario("Susana", "susy@gmail.com"), tarea8p5));
		asignaciones.add(new Asignacion("25/12/2010  05:00", "29/10/2011 21:00", new Usuario("Federico", "fede@gmail.com"), tarea1p5));
		asignaciones.add(new Asignacion("01/01/2011  16:14", "03/04/2011 17:55", new Usuario("Tatiana", "tati@gmail.com"), tarea1p2));
		asignaciones.add(new Asignacion("29/12/2010  21:30", "24/01/2011 06:43", new Usuario("Diego", "diego@gmail.com"), tarea4p4));
		asignaciones.add(new Asignacion("08/01/2011  02:05", "26/04/2011 23:00", new Usuario("Ariel", "ariel@gmail.com"), tarea5p2));

		//proyectos
		this.p1 = new Proyecto("Proyecto1", tareas1, usuariosParaProyecto1, usuariosAnteriores, asignaciones);
		this.p2 = new Proyecto("Proyecto2", tareas2, usuariosParaProyecto2, usuariosAnteriores, asignaciones);
		this.p3 = new Proyecto("Proyecto3", tareas3, usuariosParaProyecto3, usuariosAnteriores, asignaciones);
		this.p4 = new Proyecto("Proyecto4", tareas4, usuariosParaProyecto4, usuariosAnteriores, asignaciones);
		this.p5 = new Proyecto("Proyecto5", tareas5, usuariosParaProyecto5, usuariosAnteriores, asignaciones);
		
		this.getProyectos().add(p1);
		this.getProyectos().add(p2);
		this.getProyectos().add(p3);
		this.getProyectos().add(p4);
		this.getProyectos().add(p5);

	}

	//GET&SET **************************************************************************************/
	public List<Proyecto> getProyectos() {
		return proyectos;
	}
	
	public List<Usuario> getTodosLosUsuarios() {
		return todosLosUsuarios;
	}
	
	
	//MAIN ****************************************************************************************/
	public static void main(String[] args) {
		Main miMain = new Main ();
		SistemaPrincipal sistema = new SistemaPrincipal (miMain.getProyectos(), miMain.getTodosLosUsuarios()); 
		// creao la ventana principal 
		VentanaPrincipal ventanaPrincipal = new VentanaPrincipal (sistema); 
	}


}